Feedback validation of electronically generated forms

ABSTRACT

A computer-implemented method comprises determining, that a first document corresponds to a particular template that provides field specification data for identifying one or more fields from a document; generating a first electronic validation form as a graphical user interface from the first document using the particular template; sending a second notification of the first electronic validation form via email to the sender device, the notification comprising a first option for confirming invoice data in the first electronic validation form, at least some of the invoice data inline or as an attachment, and a second option for updating the invoice data in the first electronic validation form; uploading, in response to a selection of the first option, the invoice data into an enterprise resource planning (ERP) system; causing, in response to a selection of the second option, presentation of the first electronic validation form by the sender device.

CROSS-REFERENCE TO RELATED APPLICATIONS; BENEFIT CLAIM

This application claims the benefit as a Continuation of applicationSer. No. 15/068,239, filed Mar. 11, 2016, which is a Continuation ofapplication Ser. No. 14/502,894, filed Sep. 30, 2014 and issued as U.S.Pat. No. 9,286,283 on Mar. 15, 2016, the entire contents of which arehereby incorporated by reference as if fully set forth herein, under 35U.S.C. § 120. The applicant(s) hereby rescind any disclaimer of claimscope in the parent application(s) or the prosecution history thereofand advise the USPTO that the claims in this application may be broaderthan any claim in the parent application(s).

FIELD OF THE INVENTION

The present invention generally relates to computer-implemented templaterecognition using data extraction technology, and more specifically tofeedback validation of electronically generated forms for more accuratedata extraction and categorization.

BACKGROUND

Form processing requires extracting data associated with specifiedfields within a document and storing that data in a machineunderstandable format. Extracted information must be categorized asbelonging to specified fields. Because of the variety of fields, schemasand data types available, form processing is often limited tospecialized computing systems that automatically process forms for aparticular industry. This automatic processing has two levels of errors.On a first level, the input data itself may be corrupt or containerrors. On a second level, the categorization may be incorrect.Approaches for minimizing these errors have been attempted.

One approach to minimizing form processing errors includes creating aweb form that associates data with an input field before the data isinput by a user. However, a user is not always available to input datainto the categorized form fields. For industries where differententities generate large numbers of documents automatically, thisapproach is not scalable.

For example, sales are often processed by two different entitiesresiding in two independent organizations. Rather than having immediatetransfers of money with each transaction, many small businesses recordeach transaction in an accounts receivable ledger and generate aninvoice once a month. Under this system, goods and services aretransferred separately from the financial transactions, so payment isnot made at the time of receiving the goods or services. Instead,payment occurs when an accounts payable entity matches a purchase orderand a receiving report with data from an invoice. In this example,automatic form processing is desirable because many small businesssuppliers do not have the tools or personnel to create an integratedsystem with each buyer.

An approach for speeding up this process is using an invoice managementsystem to perform optical character recognition (OCR) on the invoicesand categorize the content of the invoices based on the OCRedinformation. For example, in the industry of invoice management, aspecialized machine scans an OCRed document for a specific word such as“Price”, and associates the next set of numbers with the price field. Inthe same manner, a specialized machine scans the document for “PurchaseOrder Number,” and associates the next set of numbers with the purchaseorder number field. This approach is subject to error because a set ofnumbers following a field name does not necessarily associate with thatfield. For example, a document containing the words “Price” and“Purchase Order Number”, may have price content close to the word“Purchase Order Number” and vice versa. Additionally, some invoices maycontain multiple words that define the field category or no words thatdefine a specified field. Such conflicts result in erroneouscategorizations.

The current approach for handling conflicts of this nature involvesoutsourcing all invoice documents to a third party for validating theOCRed data extraction by visual inspection. If there is anything wrongwith an OCR or categorization, the third party is required to fix theproblem to the best of their ability. This approach is susceptible toautomation errors associated with extracting data and categorizing it.This approach is also susceptible to human error, especially, becausethe third party does not have firsthand knowledge regarding the forms heor she is reading.

In addition to errors, the current approach has setbacks related torepetitious data input and data transfer. Specifically, the data must beentered by a supplier and transferred to a buyer as an invoice. The datais then extracted and transferred to a third party, where additionaldata entry may need to occur during the manual validation process. Then,the data is transferred back to the buyer where additional data entrymay need to occur. For example, if the invoice amount is erroneouslydifferent than the purchase order price, additional data entry mustoccur, or the supplier needs to generate an entirely new invoice. Thus,the system breaks down when errors occur. An improvement is desired toeliminate the redundant computations associated with data entry and datatransfer.

The approaches described in this section are approaches that could bepursued, but not necessarily approaches that have been previouslyconceived or pursued. Therefore, unless otherwise indicated, it shouldnot be assumed that any of the approaches described in this sectionqualify as prior art merely by virtue of their inclusion in thissection.

BRIEF DESCRIPTION OF THE DRAWINGS

In the drawings:

FIG. 1 is a flowchart illustrating steps of a scanning and validationworkflow of a first form received from an Accounts Receivable (AR)entity.

FIG. 2 is a flowchart illustrating steps for a scanning and validationworkflow of a second form received from the AR entity from FIG. 1.

FIG. 3 is a block diagram illustrating a validation system for formprocessing.

FIG. 4 is a flowchart illustrating steps of a form processing workflowleveraging the electronic contact address from the sender.

FIG. 5 is a flowchart illustrating steps for a form processing workflowfor automating validation feedback received by a sender.

FIG. 6 is an invoice document illustrating an example form that may beprocessed.

FIG. 7 is a block diagram of a template illustrating an examplestructure that may be overlaid on the invoice document presented in FIG.6.

FIG. 8 is an email notification illustrating an example electronicnotification for granting access to a validation web form.

FIG. 9 is a validation web form illustrating a graphic user interfacefor editing an electronically generate form.

FIG. 10 is a block diagram illustrating a computer system that may beused to implement the techniques described herein.

DETAILED DESCRIPTION

In the following description, for the purposes of explanation, numerousspecific details are set forth in order to provide a thoroughunderstanding of the present invention. It will be apparent, however,that the present invention may be practiced without these specificdetails. In other instances, well-known structures and devices are shownin block diagram form in order to avoid unnecessarily obscuring thepresent invention.

Many embodiments are described in the context of performing formprocessing on an invoice document because invoice documents have dataand fields associated with the data in a template format. However, it isunderstood that an invoice is only a specific type of form with featuresrequired in form processing such as extracting data and sending andreceiving data through multiple file types and protocols. The sameprinciples apply to other forms, such as legal forms, purchase orders,quality assurance checklists, requisition documents, flyers, postage,and questionnaires.

General Overview

By using an electronic contact address associated with receiving adocument, all forms coming from that electronic contact address may beextracted according to the same template. Additionally, the extracteddata is sent back to the generating entity for validation before thedata is input directly into a receiver's database. In this manner,electronically generated forms have little to no errors whilestreamlining overall form processing to prevent unnecessary data entryand data transfer.

For example, as presented in FIG. 1, a template validation workflowcomprises an accounts receivable entity 103 sending an invoice 109 to anaccounts payable entity 105, but the accounts payable entity receives adirect upload 127 of an electronically formatted and validated invoice.To start, the AR entity 103 generates 107 an invoice and automaticallyemails the invoice 109 to an intermediary validation server. Thevalidation server automatically reads the invoice 111 and generates atemplate 113 for the invoice. The validation server then creates avalidation page 115 and grants the AR entity 103 access 117 to thevalidation page. The AR entity 103 makes any necessary changes andsubmits the validation page 119 for direct upload 127 into the APentities accounting software or electronic resource planning (ERP)software.

Additionally, when the AR entity 103 validates 119 an electronicallygenerated form, revision information created by that user may be stored123 or used to update 125 the template generated in step 113. In thismanner, automatically read invoice data from future forms from that userare less likely to require repetitive human data manipulation duringvalidation.

For example, as presented in FIG. 2, a template validation workflowcomprises an accounts receivable entity 103 sending a second invoice 209to an accounts payable entity 105, but the accounts payable entity 105receives a direct upload 221 of an electronically formatted andvalidated invoice. To start, the AR entity 103 generates 207 an invoiceand automatically emails the second invoice 209 to an intermediaryvalidation server. The validation server automatically reads the invoice211 and applies a template 213 to the invoice generated from step 113and updated in step 125. The validation server then creates aconfirmation 215 of the 2^(nd) electronically formatted and emails theelectronic invoice 217 in an electronic notification to the AR entity103. The AR entity 103 only needs to click a link to confirm thatelectronically formatted invoice is correct 219 for direct upload 221into the AP entities accounting software or electronic resource planning(ERP) software.

System Architecture

In some embodiments, a notification server is configured to couple witha validation server further comprising an authentication andauthorization module, a template generator, OCR software, a dataextraction engine, a revision module, and an accounting softwareinterface. These modules additionally have access to a database forstoring templates and revisions associated with electronic contactaddresses for transforming an OCRed document into an electronic form.For example, FIG. 3 presents a validation system architecture with thesefeatures.

In some embodiments modules are placed on a single validation server. Inother embodiments, the system is practiced in a distributed computingenvironment where tasks are performed by specialized remote processingdevices that are linked through a communications network. In adistributed computing environment, modules may be located in both localand remote systems.

In some embodiments, the database is located on a single server. Inother embodiments, the database is located in a multi-node cluster. Instill other embodiments, the database is located in a distributedcomputing environment, wherein new data is stored in local storage,while long term storage located in one or more remote storage devices.

Electronic Notification Server

In some embodiments, an electronic notification server 305 is configuredto send and receive electronic notifications according to one or morestandardized protocols. The server sends and processes messages for aregistered network or domain. In some embodiments, a validation servergenerates an electronic contact address for each client 303 authorizedto receive form documents in the network. The electronic contactaddresses are made according to the application level protocol in whichthe messages are received. For example, an SMTP server receives an emailin the format name@domain.com, so an electronic contact addressgenerator 325 creates electronic contact addresses for each client inthat format.

In some embodiments, other application level protocols are used toreceive an electronic notification. A user may have one or moreelectronic contact addresses to receive electronic notifications throughone or more application level protocols. These protocols include, butnot limited to, Gadu-Gadu, IRC, Windows Messenger service, MSNP, Mumble,OSCAR, RVP, SIP/SIMPLE, Skype, TOC2, XMPP/Jingle, PMSG, and ZephyrNotification service. An electronic contact address is chosen from agroup comprising username, user ID, email address, screen name, handle,avatar, IP address, or other identifying information.

Electronic Contact Address Repository

In some embodiments, the validation server is configured to receiveautomatically generated notifications. These notifications may be sentby a server running a script (“bot”) that does not receive returnmessages. In such situations, the validation system maintains arepository 307 of electronic contact addresses associated with thecontact addresses used to send the automated notification, but alsoprovide access to human beings. These additional electronic contactaddresses are substituted for the electronic contact addresses that donot receive return messages. Examples of automated electronicnotifications that do not receive return messages include, but are notlimited to, bots for email, fax, instant message, SMS, web payloads, andmessaging through a website or social network. Examples of electronicnotification addresses that may be associated with these “no reply”electronic notification addresses include, but are not limited to, a POdelivery email address, an invoice validation address, an invoicevalidation escalation address, or any combination thereof.

OCR Software

In some embodiments, OCR software provides an engine that convertsscanned images or flat PDF files into searchable documents. OCR softwaremay contain many dictionaries of images that are associated withspecific characters. OCR software may additionally contain fontrecognition and coordinate mapping. For font recognition, one or morefonts are determined to be within a document before the OCR softwarescans the entire document, such that specific characters are moreaccurately determined. Dictionaries of different characters, fonts, andso forth may be located locally or remotely to the validation server.

In some embodiments, an OCRed document may be compared against one ormore text files to more accurately convert the OCRed characters. Forexample, some invoicing applications provide a plain text version of aninvoice and a PDF version of an invoice. Sequences of plain text may becompared against the OCRed characters to change characters that wereincorrectly recognized.

In some embodiments, character recognition may be augmented bysupplemental dictionaries that can be associated with specific entitiesor templates. These augmented dictionaries may be stored in their ownrepository or with the templates in the template repository.

Template and Revision Database

In some embodiments, standard templates are made for invoicingapplications known in the art. These templates provide extractioninformation such as character coordinates for specified fields, XMLschemas for marking up an OCRed document, dictionaries for font types,regular expression data for defining expected character strings, andadditional rules for defining specified fields when a required fielddoes not exist for the template. For example, in the field of invoicemanagement, some invoicing applications do not generate an invoice withits associated purchase order (PO) number. A template prevents the dataextraction module from extracting data for that particular field, andinstead, the template places a default PO number in the stead of themissing data. A template may also provide additional rules on searchingother data structures for finding a PO number to associate with openinvoices. For example, an electronic notification of an invoice from aparticular contact address may provide a link that contains PO numberinformation about the invoice. The template may provide rules to use theURL associated with the link to extract the additional informationregarding the invoice.

The template repository 309 may be searched based on electronic contactaddress or keywords within the body of the electronic notification, anOCRed attachment, the subject line of the electronic notification, thedomain name of the sender, or the IP address of the sender. By comparingthe text of an electronic notification with a list of names, keywords,colors, and character coordinates associated with specific templates, atemplate for data extraction may be found for each known template in theindustry.

For example, in the art of invoice management known invoicingapplications such as Quickbooks®, Freshbooks®, Netsuit®, Basware®,Tradeshift®, and other invoicing applications generate invoicesaccording to one or more standardized formats. An automated email of aninvoice from one of these applications often has a line describing theproduct from where it came. Some of these invoicing applications furthergenerate different invoices based on the types of goods or servicessold. One or more templates may be stored for each type of invoicingapplication and additionally organized based on sub-categories offormats for that particular invoicing application.

Template Generator

In some embodiments, templates are automatically created for an OCReddocument where a predefined template cannot be found. Templategenerating involves extracting specified field names from the documentand defining bounded areas around those field names. The templatecomprises one or more bounded areas with a key word or characterassociated with the bounded area. For example, if a field such as“purchase order number” is specified, a regular expression searches theOCRed document for “PO number,” and the closest set of alphanumericcharacters are defined as the PO field.

In some embodiments, the bounded area is defined by specific shapespositioned on or around a matched word, including but not limited tosquares, rectangles, ellipses, ovals, circles, or polyominoes such asthe Tetris® “z.”

Data Extraction Engine

In some embodiments, the data extraction engine receives an OCReddocument and searches for a template or XML schema markup and performsregular expressions from a dictionary of regular expressions on definedfields overlaid on the OCRed document. The regular expressions maysearch for any alphanumeric character within a field, or they may scanfor sequences involving special symbols or characters such as ‘$’, ‘#’,or even ‘,’ depending on the field and template used. For example, aprice in the price field may have the format of a ‘$’ followed by aseries of commas and numbers, while a PO number may have a ‘#’ followedby a series of alphanumeric characters and dashes.

The extracted data is associated with the field name it was extractedfrom, and placed in a data structure or inserted into a database. Insome embodiments, revision information is applied to the extracted databefore being placed in a data structure or inserted into a database inorder to account for repetitive errors.

In some embodiments, the data extraction engine overlays a template onan OCRed document. Specific bounded areas within the document are markedup according to an XML schema. The OCRed document is marked up as an XMLdocument by adding the necessary headers and tags associated with theXML schema based on the OCRed data having content within bounded areasdefined by the template. After content is found within a bounded are, anelement start tag is added to define one or more character strings untila delimiter is discovered. An end tag for that element is added to thatgroup of OCRed characters, and the next element start tag is added.Further regular expression matching and XML markup may be performedwithin the elements after they are defined.

Revision Module

In some embodiments, a revision module generates unique web pagescomprising an electronic form in an editable format. The form isconfigured to accept revisions to field categorizations and associatedcontent. The form may have specific tools or buttons that enable a userto edit the form. For example, an editable form may have a swap toolthat allows a user to swap data between two fields. Additional tools mayinclude drawing tools to edit the bounded areas defining a template forOCRed documents from a particular electronic contact address. Theeditable form may also accept traditional word processing commands suchas cut, copy, and paste. Delimiters may be further defined with keystrokes such as enter, tabs, deletions, and alphanumeric characters.

An example graphic user interface is presented in FIG. 9. The editableweb form 901 has graphic depiction of a template overlay on the image ofa document 909. In this template overlay 903, there a document image 909with various fields 911, 915 drawn on top of the document. A first setof content 913 from a first field 911 is extracted and placed in anelectronic form of an invoice 907. The first field 921 is defined as aninvoice number 923, and the content 925 of the first field istransferred to the electronic invoice 907. The second field 927 isdefined as a price 929, and the content 931 of the second field istransferred to the electronic invoice 907. If a field is over inclusiveor under inclusive, such that the data extraction engine is extractingtoo much or too little content from the document image 909, a user mayuse the drawing tools 919 to redefine or resize the bounded area forthat particular field. Additionally, a user may use the swap tool 926 toswap content if the content was incorrectly associated with a field.

In some embodiments, the revision module additionally comprises a scriptfor recording actions taken on each uniquely created editable form.Actions may be recorded as macros or updates to the template associatedwith the form. For example, use of the swap tool 926 on the price 929and invoice number 923 data is tracked and stored as a revision record.

Revision information may also include lower layer changes made to an XMLschema or element tags (not shown). In this case, the revisioninformation may be stored as associated with a specific electroniccontact address, a template, or any combination thereof.

Electronic Form Storage Interface

In some embodiments, an electronic form storage interface is acontroller file for inputting an electronic form directly into adatabase. This may involve XML shredding or simply taking any parseddata and placing it in its associated fields in a database.

In some embodiments, the data entry interface refers to sending data toaccounting software. The accounting software may be local to thevalidation server or the interface may only provide an applicationsprogramming interface (API) for entering data directly into proprietarysoftware or databases. In still other embodiments, the interface placespayment information from an invoice in a queue.

In one embodiment, the interface performs its functions through aninternet connection. Access may be encrypted, and payloads may becompressed according to encryption and/or compression techniques knownin the art. The AP interface may have direct access to AP proprietarysoftware through an API. These APIs may be standardized such as SimpleObject Access Protocol (SOAP) or Representative State Transfer (REST),or they may be proprietary.

In other embodiments, the interface performs its functions locally orthrough an intranet connection. Data may be transferred using an API, aproprietary transfer protocol, or through direct access to internalfiles and network devices.

Implementation

In some embodiments, the form processing workflow is implemented bysetting up a proxy electronic contact address for receiving electronicnotifications of forms. Any electronic notifications sent to the proxyvalidation server are processed by extracting an electronic contactaddress of the form sender. The validation server then performs dataextraction through OCR, template overlay or XML markup, and regularexpression matching. Validation is automated by sending the extracteddata back to the electronic contact address or an associated electroniccontact address for validation. Finally, the electronic form is entereddirectly into an AP system.

For example, FIG. 4 illustrates a form processing workflow where littleto no data entry is required. A sender entity 403 generates 407 a formand sends the form to a validation server 405 via an electronicnotification 409. Upon receiving the electronic notification 409, thevalidation server 405 extracts an electronic contract address 411. Thevalidation server 405 then applies 413 a template associated with thesender's electronic contact address to the invoice to extractinformation necessary to generate 415 an electronic form comprisingmachine parsable data. The sender entity 403 is then granted 417 accessand prompted to validate the electronic form. The sender entityvalidates 419 the electronic form by making any necessary changes orrevisions and by submitting the editable web form. The form'scategorized content is then stored 421 directly as data in a database.In some embodiments, the sender entity may accept the electronicvalidation form without actually going to the web page. In theseembodiments, the electronic form generated in step 415 is stored 421directly in the database.

In some embodiments, the validation server creates templates andleverages revision information applied to those templates. For example,in FIG. 5, illustrates a form processing workflow where little to nodata entry is required with additional features of template creation andautomated application of validation feedback revision information. Asender entity 503 generates 507 a form and sends the form to avalidation server 505 via an electronic notification 509. Upon receivingthe electronic notification 509, the validation server 505 extracts 511an electronic contract address. The validation server 505 then appliesan OCR 513 algorithm to the document. With the extracted contact addressfrom step 511, the validation server performs a template search 515 fora template associated with the sender's electronic contact address. Ifno template is found, the validation server creates a new template 517.The validation server then applies the found or created template 519 tothe OCRed document. The sender entity 503 is then granted 525 access andprompted to validate the electronic form. The sender entity validates527 the electronic form by making any necessary changes or revisions andsubmitting the editable web form. The form's categorized content is thenstored 533 directly as data in a database. In some embodiments, thevalidation server may accept the electronic validation form withadditional revision information. In these embodiments, the revisioninformation may be applied 521 after applying a template if necessary.Optionally, the revision information may also be used to create a newversion of the template found in step 515 of created in step 517.

Proxy Setup

In some embodiments, a client registers with a validation server 505 tocreate a proxy receiver. Authentication credentials for each user may becreated in a traditional manner by requiring each user to register ausername and password. After registering, the validation servergenerates an electronic contact address for the user.

As presented in FIG. 3, a client registers under the authentication andauthorization module 323, which involves creating a username andpassword. The authentication module 323 then prompts the contact addressgenerator 325 to create a new electronic contact address based on theusername of the registered user, and the domain of the notificationserver 305.

In some embodiments, the clients may configure settings individually orglobally. In a global configuration, the electronic contact address issent to all individuals or entities that send the user forms to betransformed into electronic forms. This may be an automated or manualprocess. For example, a small business may have a plurality ofsuppliers. A list of these suppliers called a chart of accounts may beuploaded to the validation server, so the validation server can send anelectronic notification to each supplier stating a change in electroniccontract address of the small business. In an individual configuration,a client may determine specific suppliers to opt in or out of thesystem. Additional settings may include configuring the system to usespecific electronic contact addresses associated with a supplier such asa PO delivery email address, an invoice validation address, an invoicevalidation escalation address, or any combination thereof.

While normally a sender entity 503 sends a form document to a receiveras an email with a portable document format (pdf) attachment, in FIG. 5,the receiver uses the validation server 505 as proxy by giving thesender entity a contact address generated by the validation server. Forexample, instead of sending invoices directly to the buyer, an AR entitysends these messages to the validation server, which are then routedthrough the validation server modules to transform the document into anelectronic form.

Sender Entity Setup

In some embodiments, there is an automatic trigger for sending automatednotifications to notification server 305. An example of notificationsystem that sends automated notifications is an Accounts Receivablesystem (AR system). The AR system automatically generates and sends abatch of invoices to every customer once a month. Other triggeringevents include, but are not limited to, automatically invoicing for aproject or billing after a threshold amount of sales have been reached.

For example, after a triggering event, a notification system for anaccounts receivable entity automatically emails an invoice to a buyer.The invoice is sent as an email attachment. However, other examplesexist where the form is sent as plain text in the body of an electronicnotification. In some embodiments, the form to be processed istransferred using more than one type of transfer. For example, aninvoice notification may be sent in an emailed as a PDF attachment andas plain text within the body of email. In both cases, the sendertransmits the electronic forms to a receiver proxy such as notificationserver 305.

Extracting an Electronic Contact Address

In some embodiments, a PDF document is received through an automatedelectronic notification such as an email. The electronic notification isassociated with at least one electronic contact address such as an emailaddress. This electronic contact address is extracted 511 from theelectronic notification, and the electronic contact address isassociated with the document.

For example, an SMTP server receives an automated email and searches forthe SMTP command “MAIL FROM:” to extract the sender's email address.This email address may be compared against a repository of associatedemail addresses if the automated email sender does not receive returnemails. If other application level protocols are used, then extracting asender contact address is performed according to the respectiveprotocol.

In some embodiments, sender contact address is extracted from the bodyof the electronic notification or the streamed or attached document. Forexample, an electronic contact address may be extracted from field 607in FIG. 6. In this embodiment, an application specific regularexpression or matching algorithm may be used to associate a contactaddress with the sent document.

Electronic Form Generation

In some embodiments, electronic form generation comprises performingoptical character recognition 513 on a document to gain a set ofrecognized characters. A template search involves pulling templatesassociated with the electronic contact address and comparing thedocument with other key information. Identification of a template may beadditionally determined through additional recognition of bar codes, QRcodes, symbols, or even logos. For example, logo 603 in FIG. 6 may beassociated with invoice generation software that indicates a type oftemplate.

By applying a template 519 associated with the extracted electroniccontact address, an XML schema is added to the OCRed document. Thetemplate may increase the accuracy of an OCR and data extraction by theuse of dictionaries, rules, and other information associated with theextracted electronic contact address. The document is thus transformedinto an electronic form that may be viewed as a web page and parsed forspecific segments of information.

In some embodiments, the template is defined as a list of fields withinbounded areas. These fields include, but are not limited to, a suppliername, a status, an invoice number, an invoice date, an invoice controltotal, a supplier note, a data source, a reject field, an image scan,other attachments, a payment term, a chart of accounts field, a remit-tofield, a location code, a PO line, tax information, a contract field, abilling field, a period field, a UNSPSC field, or any combinationthereof.

These fields may also include some or all of the data related to apurchase order that may already be existing within the system. Thesefields include, but are not limited to, a logo for the supplier, a logofor the buyer, a brand name, a supplier name, a supplier address, abuyer shipping address, a buyer billing address, a purchase ordernumber, a date, payment terms, shipping terms, currency type, contractinformation, contact information such as name, phone number, emailaddress, fax, or username for a messaging service, line itemdescriptions of goods further including quantity, batch pricing, price,sub-total pricing, total pricing, total number of units, or anycombination thereof.

For example, invoice document 601 contains a logo 603, some contactinformation 607, 609, and some invoice details 611-619, in addition toline item details 621. This invoice document may be OCRed using the OCRsoftware 327. Using a template 701 overlaid on to the OCRed document anusing an XML markup of the OCRed document, specific regions or elementswithin the document may be extracted as a string of content associatedwith each field.

Each specific region of a template 701 is associated with an XML,schema. For example, Line Item Details 715 may have a schema comprisinga root element “invoice table” with child elements “description”,“price”, “quantity”, and “total”. Once the template matches a table ofdescription, price, quantity, and total, a root tag “<invoice table>” isadded to the front of the matched words. Then a nested “<description>”tag is added to the next set of words, until a delimiter such as a tabis found. The “</description>” tag is added to end to make well-formedXML and the next element is started, “<price>”. After exhausting contenton the first line, a second description element tag is started on thesecond line, and the process is repeated. An end tag </invoice table>may be added in response to a different type of delimiter, a specificword (such as “Total”), a font type such as bold, or matching any othercomputer recognizable feature of the document.

Granting Access to a Validation Form

In some embodiments, access is granted to the validation form through alink sent in an electronic notification to the electronic contactaddress associated with the sender of the original document. In someembodiments, access is granted to the validation form by authorizing theelectronic notification contact address to access the validation form.Authentication credentials for the authorized user may be created in atraditional manner by requiring each user to register and associate anelectronic contact address with the user. Authentication credentials maybe automatically created upon receiving an automatic electronicnotification. For example, a user with a username of the electroniccontact address is created and a password is sent to the user in a replyelectronic notification.

In some embodiments, access is granted to the validation form by anelectronic notification with a deep link to the validation form that isautomatically sent to the electronic contact address. For example, insome embodiments, authentication is made according to methods of takingan electronic contact address and temporarily granting access to asecurity sandboxed portion of the system.

For example, an electronic notification 801 in FIG. 8 may be sent as anemail to the sender of the original form document. The electronicnotification comprises a confirmation link 803 and a link grantingaccess to the validation form 805. The electronic notificationadditionally comprises an inline message of the extracted data with itscategorizations 807, and an attachment of the invoice data in anelectronic form format 809.

In some embodiments, a sender entity may be required to access thevalidation form within a specified time period or the form is rejected.Such embodiments may include an “escalation” electronic notification,where the validation server sends a reminder notification after anothertime period if no validation has yet occurred. If no response is givenwithin the time period, the form may be sent back to the sender asrejected. Other embodiments, include having the validation server notifythe client that the electronic form was never validated, so the clientmay review the electronically parsable form.

In order to encourage users and sender to use the system properly, thesystem may include statuses of each form. For example, if an electronicform has not been created, but not validated, a status may include“validation pending”. If the time period for accessing a validation formhas expired, the status may include “Validation Window Expired—NeedsReview.” If an electronic form has been created and validated, thestatus of the form may read “Validation Complete.” These statuses may beviewable through the validation system or sent as positive/negativefeedback notifications throughout the form validation process.Additional positive feedback may be included for the sender in the formof graphical representations of money or coupons and further incentivesfor performing a validation. A spectrum of graphical representations maybe employed that correlates to timeliness of a validation.

Validation Form

In some embodiments, an editable html form is created using theextracted data and associated fields. FIG. 9 illustrates web form withswappable fields that may be performed by a user validating an invoice.For example, after an electronic contact address has been extracted froman electronic notification and no template is found associated with thatelectronic contact address, the template generator may generate atemplate over the invoice 601. The Invoice Number field 613 isassociated with 15,382.01 content 623, and the total price field 623 isassociated with the #12345 content 613.

A validation form 901 has the fields and associated content from invoice601, but the content is incorrectly categorized. Thus, invoice number923 from the first field 921 has 15,382.01 content 925, and total price929 from the second field 927 has 12345 content 931. Upon reaching FIG.9, a user may use the swap tool 926 to switch the content and fieldassociations.

Controls on Illegal Changes

In some embodiments, additional scripts are added to pages generatedfrom the revision module. These scripts prevent users from deliberatelyor accidentally changing an editable form such that the information isclearly erroneous. For example, in invoice processing, the price fieldsfrom an invoice are matched with the price fields of a purchase order.Although the pricing may be slightly different due to taxes, the priceof the electronically formatted invoice is required to be within aspecified tolerance level of the purchase order price. This tolerancemay be adjustable based on the direction of the change. For example, aprice change cap of 15% may be implemented to account for taxes, but aprice change floor of 75% may be implemented to account for discounts.

Automating Revision Information

In some embodiments, revision information is used to edit extracted datafrom future documents sent by the same or an associated electroniccontact address. For example, if a macro was stored as revisioninformation, a second document sent by the same electronic contactaddress may be received. After data extraction and translation of theinformation to an electronically parsable format, all of the revisionsteps are performed on the second document by the macro instead of ahuman user. After these steps are performed, the sender is sent anelectronic notification of the extracted data after it has been revised.The electronic contact address may still be granted access to thevalidation form using one or more of the steps indicated in thevalidation form section, but the human user is less likely to need touse the form to make edits. Thus, repetitive data input is eliminatedfrom the form processing of documents received from the same electroniccontact address.

Interface with Accounts Payable Accounting Software

In some embodiments, the validation server is interfaced with accountingsoftware having an accounts payable system such that the extracted andvalidated data is directly entered into the accounts payable system.Thus, after receiving the validated extracted data from the OCReddocument with the revisions from the validation form, the data is storeddirectly in a database for the accounting software in the data structurefor the accounts payable ledger.

Accounting software is application software that records and processesaccounting transactions. The software may be integrated with otherbusiness management systems such as E-Procurement and EnterpriseResource Planning software. The system is designed for a single entityto have an integrated view of core business accounts using a databasemanagement system. With this system, a single entity may track accountspayable, accounts receivable, payroll, and trial balance. Because thesystem aggregates a plethora of useful information, the system mayprovide an application programming interface (API) for accessing data inthe system directly. Because some of these systems providefunctionalities such as automatic payment, access to the system by arm'slength entities must be limited to specific import and exportfunctionalities.

Hardware Overview

According to one embodiment, the techniques described herein areimplemented by one or more special-purpose computing devices. Thespecial-purpose computing devices may be hard-wired to perform thetechniques, or may include digital electronic devices such as one ormore application-specific integrated circuits (ASICs) or fieldprogrammable gate arrays (FPGAs) that are persistently programmed toperform the techniques, or may include one or more general purposehardware processors programmed to perform the techniques pursuant toprogram instructions in firmware, memory, other storage, or acombination. Such special-purpose computing devices may also combinecustom hard-wired logic, ASICs, or FPGAs with custom programming toaccomplish the techniques. The special-purpose computing devices may bedesktop computer systems, portable computer systems, handheld devices,networking devices or any other device that incorporates hard-wiredand/or program logic to implement the techniques.

For example, FIG. 10 is a block diagram that illustrates a computersystem 1000 upon which an embodiment of the invention may beimplemented. Computer system 1000 includes a bus 1002 or othercommunication mechanism for communicating information, and a hardwareprocessor 1004 coupled with bus 1002 for processing information.Hardware processor 1004 may be, for example, a general purposemicroprocessor.

Computer system 1000 also includes a main memory 1006, such as a randomaccess memory (RAM) or other dynamic storage device, coupled to bus 1002for storing information and instructions to be executed by processor1004. Main memory 1006 also may be used for storing temporary variablesor other intermediate information during execution of instructions to beexecuted by processor 1004. Such instructions, when stored innon-transitory storage media accessible to processor 1004, rendercomputer system 1000 into a special-purpose machine that is customizedto perform the operations specified in the instructions.

Computer system 1000 further includes a read only memory (ROM) 1008 orother static storage device coupled to bus 1002 for storing staticinformation and instructions for processor 1004. A storage device 1010,such as a magnetic disk, optical disk, or solid-state drive is providedand coupled to bus 1002 for storing information and instructions.

Computer system 1000 may be coupled via bus 1002 to a display 1012, suchas a cathode ray tube (CRT), for displaying information to a computeruser. An input device 1014, including alphanumeric and other keys, iscoupled to bus 1002 for communicating information and command selectionsto processor 1004. Another type of user input device is cursor control1016, such as a mouse, a trackball, or cursor direction keys forcommunicating direction information and command selections to processor1004 and for controlling cursor movement on display 1012. This inputdevice typically has two degrees of freedom in two axes, a first axis(e.g., x) and a second axis (e.g., y), that allows the device to specifypositions in a plane.

Computer system 1000 may implement the techniques described herein usingcustomized hard-wired logic, one or more ASICs or FPGAs, firmware and/orprogram logic which in combination with the computer system causes orprograms computer system 1000 to be a special-purpose machine. Accordingto one embodiment, the techniques herein are performed by computersystem 1000 in response to processor 1004 executing one or moresequences of one or more instructions contained in main memory 1006.Such instructions may be read into main memory 1006 from another storagemedium, such as storage device 1010. Execution of the sequences ofinstructions contained in main memory 1006 causes processor 1004 toperform the process steps described herein. In alternative embodiments,hard-wired circuitry may be used in place of or in combination withsoftware instructions.

The term “storage media” as used herein refers to any non-transitorymedia that store data and/or instructions that cause a machine tooperate in a specific fashion. Such storage media may comprisenon-volatile media and/or volatile media. Non-volatile media includes,for example, optical disks, magnetic disks, or solid-state drives, suchas storage device 1010. Volatile media includes dynamic memory, such asmain memory 1006. Common forms of storage media include, for example, afloppy disk, a flexible disk, hard disk, solid-state drive, magnetictape, or any other magnetic data storage medium, a CD-ROM, any otheroptical data storage medium, any physical medium with patterns of holes,a RAM, a PROM, and EPROM, a FLASH-EPROM, NVRAM, any other memory chip orcartridge.

Storage media is distinct from but may be used in conjunction withtransmission media. Transmission media participates in transferringinformation between storage media. For example, transmission mediaincludes coaxial cables, copper wire and fiber optics, including thewires that comprise bus 1002. Transmission media can also take the formof acoustic or light waves, such as those generated during radio-waveand infra-red data communications.

Various forms of media may be involved in carrying one or more sequencesof one or more instructions to processor 1004 for execution. Forexample, the instructions may initially be carried on a magnetic disk orsolid-state drive of a remote computer. The remote computer can load theinstructions into its dynamic memory and send the instructions over atelephone line using a modem. A modem local to computer system 1000 canreceive the data on the telephone line and use an infra-red transmitterto convert the data to an infra-red signal. An infra-red detector canreceive the data carried in the infra-red signal and appropriatecircuitry can place the data on bus 1002. Bus 1002 carries the data tomain memory 1006, from which processor 1004 retrieves and executes theinstructions. The instructions received by main memory 1006 mayoptionally be stored on storage device 1010 either before or afterexecution by processor 1004.

Computer system 1000 also includes a communication interface 1018coupled to bus 1002. Communication interface 1018 provides a two-waydata communication coupling to a network link 1020 that is connected toa local network 1022. For example, communication interface 1018 may bean integrated services digital network (ISDN) card, cable modem,satellite modem, or a modem to provide a data communication connectionto a corresponding type of telephone line. As another example,communication interface 1018 may be a local area network (LAN) card toprovide a data communication connection to a compatible LAN. Wirelesslinks may also be implemented. In any such implementation, communicationinterface 1018 sends and receives electrical, electromagnetic or opticalsignals that carry digital data streams representing various types ofinformation.

Network link 1020 typically provides data communication through one ormore networks to other data devices. For example, network link 1020 mayprovide a connection through local network 1022 to a host computer 1024or to data equipment operated by an Internet Service Provider (ISP)1026. ISP 1026 in turn provides data communication services through theworld wide packet data communication network now commonly referred to asthe “Internet” 1028. Local network 1022 and Internet 1028 both useelectrical, electromagnetic or optical signals that carry digital datastreams. The signals through the various networks and the signals onnetwork link 1020 and through communication interface 1018, which carrythe digital data to and from computer system 1000, are example forms oftransmission media.

Computer system 1000 can send messages and receive data, includingprogram code, through the network(s), network link 1020 andcommunication interface 1018. In the Internet example, a server 1030might transmit a requested code for an application program throughInternet 1028, ISP 1026, local network 1022 and communication interface1018.

The received code may be executed by processor 1004 as it is received,and/or stored in storage device 1010, or other non-volatile storage forlater execution.

In the foregoing specification, embodiments of the invention have beendescribed with reference to numerous specific details that may vary fromimplementation to implementation. The specification and drawings are,accordingly, to be regarded in an illustrative rather than a restrictivesense. The sole and exclusive indicator of the scope of the invention,and what is intended by the applicants to be the scope of the invention,is the literal and equivalent scope of the set of claims that issue fromthis application, in the specific form in which such claims issue,including any subsequent correction.

What is claimed is:
 1. A computer-implemented method of validating datathrough electronic forms, comprising: receiving, by a processor, a firstnotification of a first document from a sender device; determining, bythe processor, that the first document corresponds to a particulartemplate that provides field specification data for identifying one ormore fields from a document; generating a first electronic validationform as a graphical user interface from the first document using theparticular template, the first electronic validation form comprising aparticular field associated with a particular data item identified fromthe first document using the field specification data in the particulartemplate, the first electronic validation form further comprising one ormore controls for revising the particular field, a particular data item,or an association between the particular field and the particular dataitem obtained from the first document; sending a second notification ofthe first electronic validation form via email to the sender device, thenotification comprising a first option for confirming invoice data inthe first electronic validation form, at least some of the invoice datainline or as an attachment, and a second option for updating the invoicedata in the first electronic validation form; uploading, in response toa selection of the first option, the invoice data into an enterpriseresource planning (ERP) system; causing, in response to a selection ofthe second option, presentation of the first electronic validation formby the sender device.
 2. The computer-implemented method of claim 1,further comprising: upon receiving an input through the one or morecontrols, generating revision information for the particular template;and in response to determining that a second document corresponds to theparticular template, generating a second electronic validation formusing the particular template and automatically applying the revisioninformation to the second electronic validation form.
 3. Thecomputer-implemented method of claim 1, further comprising: upondetecting an action with the one or more controls, recording the actioninto a macro; in response to determining that a second documentcorresponds to the particular template, generating a second electronicvalidation form using the particular template and automatically applyingthe macro to the second electronic validation form.
 4. Thecomputer-implemented method of claim 1, further comprising uponreceiving an input through the one or more controls, generating a newtemplate based on the input.
 5. The computer-implemented method of claim1, the determining further being based on an electronic contact addressor keywords within a body of the first notification, an OCRedattachment, a subject line of the first notification, the domain name ofthe sender device, or the IP address of the sender device.
 6. Thecomputer-implemented of claim 5, the determining further being based ona bar code, a QR code, a symbol, or a logo in the first document.
 7. Thecomputer-implemented method of claim 1, the determining furthercomprising: extracting an electronic contact address from the firstnotification; detecting that the electronic contact address isassociated with no reply; replacing the electronic contact address withan additional electronic contact address.
 8. The computer-implementedmethod of claim 1, the first notification further comprising informationregarding the particular field and the particular data item orinformation regarding a status of the first electronic validation form.9. The computer-implemented method of claim 8, the status beingvalidation pending or validation window expired.
 10. Thecomputer-implemented method of claim 1, the one control being a drawingtool to redefine or resize a bounded area for the particular field. 11.The computer-implemented method of claim 1, the first electronicvalidation form further comprising a second field identified from thefirst document using the field specification data in the particulartemplate, the one control being a swap tool to swap contents of theparticular field and the second field.
 12. The computer-implementedmethod of claim 1, the first electronic validation form comprising asecond field, the generating further comprising associating a defaultdata item with a second field when the second field is not identifiedfrom the first document.
 13. The computer-implemented method of claim 1,the generating further comprising following a link in the first documentto retrieve the particular data item.
 14. One or more non-transitorycomputer-readable media storing instructions which, when executed by oneor more processor, cause performance of a method of validating datathrough electronic forms, the method comprising: receiving a firstnotification of a first document from a sender device; determining thatthe first document corresponds to a particular template that providesfield specification data for identifying one or more fields from adocument; generating a first electronic validation form as a graphicaluser interface from the first document using the particular template,the first electronic validation form comprising a particular fieldassociated with a particular data item identified from the firstdocument using the field specification data in the particular template,the first electronic validation form further comprising one or morecontrols for revising the particular field, the particular data item, oran association between the particular field and the particular data itemobtained from the first document; sending a second notification of thefirst electronic validation form via email to the sender device, thenotification comprising a first option for confirming invoice data inthe first electronic validation form, at least some of the invoice datainline or as an attachment, and a second option for updating the invoicedata in the first electronic validation form; uploading, in response toa selection of the first option, the invoice data into an enterpriseresource planning (ERP) system; causing, in response to a selection ofthe second option, presentation of the first electronic validation formby the sender device.
 15. The one or more non-transitorycomputer-readable media of claim 14, the method further comprising: uponreceiving an input through the one or more controls, generating revisioninformation for the particular template; and in response to determiningthat a second document corresponds to the particular template,generating a second electronic validation form using the particulartemplate and automatically applying the revision information to thesecond electronic validation form.
 16. The one or more non-transitorycomputer-readable media of claim 14, the method further comprising: upondetecting an action with the one or more controls, recording the actioninto a macro; in response to determining that a second documentcorresponds to the particular template, generating a second electronicvalidation form using the particular template and automatically applyingthe macro to the second electronic validation form.
 17. The one or morenon-transitory computer-readable media of claim 14, the method furthercomprising upon receiving an input through the one or more controls,generating a new template based on the input.
 18. The one or morenon-transitory computer-readable media of claim 14, the determiningfurther comprising: extracting that an electronic contact address fromthe first notification; detecting that the electronic contact address isassociated with no reply; replacing the electronic contact address withan additional electronic contact address.
 19. The one or morenon-transitory computer-readable media of claim 14, the first electronicvalidation form comprising a second field, the generating furthercomprising associating a default data item with a second field when thesecond field is not identified from the first document.
 20. The one ormore non-transitory computer-readable media of claim 14, the generatingfurther comprising following a link in the first document to retrievethe particular data item.